package br.com.suricattus.util.string;

/**
 * Classe utilitaria para Mod11
 * 
 * @author lucas lins
 *
 */
public abstract class Mod11Util {
	
	/**
	 * Retorna o DV para codigos de barra
	 * @param num
	 * @return
	 */
	public static int getBarCodeDV(String num){
		int dv = getDV(num);
		return dv == 0 || dv == 1 || dv == 10 ? 1 : dv;
	}
	
	/**
	 * Retorna o DV para conta corrente do Banco do Brasil.
	 * @param num
	 * @return
	 */
	public static String getBBContaCorrenteDV(String num){
		int dv = getDV(num);
		return dv == 10 ? "X" : Integer.toString(dv);
	}
	
	/**
	 * Retorna o mod11 calculado
	 * @param num
	 * @return
	 */
	public static int getDV(String num){
		int sum = 0;
		for(int i = num.length() - 1, m = 2; i >= 0; i--) sum += Character.getNumericValue(num.charAt(i)) * m++;
		return (sum * 10) % 11;
	}
	
}
